Bidirectional forwarding detection (BFD) is a network protocol used to detect faults between two nodes in a network connected by a link or path across the network. The Internet Engineering Task Force (IETF) Request for Comments (RFC) 5880 sets forth that the base protocol for “Bidirectional Forwarding Detection (BFD)” may apply to any network, including to Internet Protocol (IP) networks. Predominantly, path selection between nodes in IP networks is controlled through dynamic routing protocols and selection of the best available route to a given network node. Routing protocols and rules of selecting the best route are designed to ensure that an IP packet follows the best route (e.g., the route with the lowest cost measure) from one node to another node towards a destination without causing the IP packet to loop in the network.
The BFD protocol uses control packets to detect failures in the network. These control packets are sent between the end nodes of a BFD session, where a failure of N consecutive control packets to arrive at the opposite end indicates a failure in the link or path, where N is defined as the Detect Multiplier in RFC 5880 and may be set to 1, but more often has a value of 3. BFD control packets, like other IP data packets, will follow the best route to the destination node and thus ensure an in-band requirement that is set forth toward Operation, Administration, and Maintenance (OAM) mechanisms. Because IP routing is usually symmetrical (i.e., the best routes between two IP end points traverse the same nodes), BFD control packets in the forward and reverse directions of a BFD session between two nodes usually traverse the same nodes. As a result, any detected unidirectional failure in the link or path can be considered as a bidirectional defect and can be acted upon accordingly. However, the best route model does not allow control of traffic distribution beyond the best route paths.
An alternative to the best route paradigm is a method wherein an entire path is predetermined, for example, either by a controller or at the ingress node. This can be done either by directing packets into an explicitly-routed tunnel or by explicitly specifying all intermediate nodes for each packet. In general, such paths need to be viewed as unidirectional. Because BFD is predominantly used in its asynchronous mode, the far-end peer node is likely to select the best available route when sending its BFD control packets. As a result, BFD control packets may not cross the same set of nodes in the forward and reverse directions. Thus, a unidirectional failure cannot be interpreted as an indication of a bidirectional defect, and in certain scenarios, a defect would not be detected for an extended period of time.